home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 March / macformat-022.iso / Shareware City / Science / µSim 1.0b5 folder / Libs / Independents.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-29  |  1.4 KB  |  86 lines  |  [TEXT/MMCC]

  1. #include    "Independents.h"
  2.  
  3.  
  4. StringPtr GetPtrIndHString(Handle resH, unsigned short index)
  5. {
  6. unsigned short    *compPtr = (unsigned short *)*resH;
  7. unsigned char    *spanPtr;
  8. unsigned short    i = index;
  9.  
  10. if (*compPtr++ <= i)
  11.     spanPtr = nil;
  12. else {
  13.     spanPtr = (unsigned char *)compPtr;
  14.     while (i) {
  15.         spanPtr += *spanPtr++;
  16.         i--;
  17.         }
  18.     }
  19.  
  20. return (StringPtr)spanPtr;
  21. }
  22.  
  23. void GetIndHString(Str255 *dest, Handle resH, unsigned short index)
  24. {
  25. unsigned short    *compPtr = (unsigned short *)*resH;
  26. unsigned char    *spanPtr;
  27. unsigned short    i = index;
  28.  
  29. if (*compPtr++ <= i)
  30.     Length(dest) = 0;
  31. else {
  32.     spanPtr = (unsigned char *)compPtr;
  33.     while (i) {
  34.         spanPtr += *spanPtr++;
  35.         i--;
  36.         }
  37.     BlockMoveData(spanPtr, dest, *spanPtr + 1L);
  38.     }
  39.  
  40. return;
  41. }
  42.  
  43. short KeyState(unsigned short k )
  44. // k =  any keyboard scan code, 0-127
  45. {
  46. KeyMap    km;
  47.  
  48. GetKeys(km);
  49. return ( ( *((unsigned char *)km + (k>>3)) >> (k & 7) ) & 1);
  50. }
  51.  
  52. OSType Str2OSType(StringPtr theStr)
  53. {
  54. OSType result;
  55. Ptr    source, dest;
  56. unsigned char i = Length(theStr);
  57.  
  58. source = (Ptr)theStr + 1;
  59. dest = (Ptr)&result;
  60. *dest++ = *source++;
  61. *dest++ = *source++;
  62. *dest++ = *source++;
  63. *dest++ = *source++;
  64.  
  65. if (i < 4)
  66.     while (i < 4) {
  67.         *--dest = 0x20;
  68.         i++;
  69.         }
  70.  
  71. return result;
  72. }
  73.  
  74. void OSType2Str(OSType typ, StringPtr theStr)
  75. {
  76. register StringPtr    tempPtr = theStr;
  77. register StringPtr    sourcePtr = (StringPtr)&typ;
  78.  
  79. *tempPtr++ = 4;
  80. *tempPtr++ = *sourcePtr++;
  81. *tempPtr++ = *sourcePtr++;
  82. *tempPtr++ = *sourcePtr++;
  83. *tempPtr = *sourcePtr;
  84. }
  85.  
  86.